/**
 * 
 */
package com.lifeware.research.endo.models.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.lifeware.research.endo.models.entities.AcromegaliaSchedeBase;

/**
 * <p>Permette il recupero delle informazioni sulle scheda base per 
 *    l'acromegalia attraverso l'utilizzo di H8. 
 * </p>
 * 
 * @author  Riccardo Cardin, (C) 2012 Lifeware
 * @version 1.0
 */
@Repository
public class AcromegaliaSchedeBaseH8Dao extends AbsHibernateDao implements IAcromegaliaSchedeBaseDao {

	@Autowired
	public AcromegaliaSchedeBaseH8Dao(SessionFactory sessionFactory) {
		
		super(sessionFactory);
	}

	/** 
	 * <p>Il metodo recupera anche le informazioni associate alla tabella, 
	 *    fornendo quindi una versione <em>heavy</em> dell'oggetto.
	 * </p>
	 * 
	 * @see com.lifeware.research.endo.models.dao.IAcromegaliaSchedeBaseDao#findById(java.lang.Long)
	 */
	@Override
	public AcromegaliaSchedeBase findById(Integer id) {
		
		/* Recupero la sessione corrente */
		Session session = this.sessionFactory.openSession();
		
		/* Recupero la scheda base */
		AcromegaliaSchedeBase acroSchedaBase = 
				(AcromegaliaSchedeBase) session.get(
						AcromegaliaSchedeBase.class, id);
		
//		/* Carico in memoria le informazioni associate alla tabella */
//		acroSchedaBase.getEsamiStrumentaliByIdEsameStrumentaleColonscopia();
//		acroSchedaBase.getEsamiStrumentaliByIdEsameStrumentaleEcografiaTiroide();
		
		
		/* Chiudo la sessione */
		session.close();
		
		return acroSchedaBase;
	}

	@Override
	public AcromegaliaSchedeBase saveOrUpdate(AcromegaliaSchedeBase schedeBase) {
		
		/* Recupero la sessione corrente */
		Session session = this.sessionFactory.openSession();
		
		/* Effettuo la persistenza */
		session.saveOrUpdate(schedeBase);
		
		// XXX Necessario per far funzionare all-delete-orphan!!!
		session.flush();
		
		/* Chiudo la sessione */
		session.close();
		
		return schedeBase;
	}

}
